﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using upcdew_20111_group2b.CapaDominio;
using upcdew_20111_group2b.CapaPersistencia;

namespace upcdew_20111_group2b.CapaPrueba
{
    [TestFixture]
    public class TestResidenteDAO
    {
        // 1. Instancia el objeto DAO
        private ResidenteDAO residenteDAO = new ResidenteDAO();

        [Test]
        public void TestCrear()
        {
            // 2. Instanciando el objeto TO
            Residente nuevaResidente = new Residente();

            // 3. Agregamos los valores del objeto TO

            nuevaResidente.CodResidente = "40459127";
            nuevaResidente.Nom_Residente = "David Enciso";
            nuevaResidente.Fec_Nacimiento = DateTime.Parse("01/01/1980");
            nuevaResidente.Tex_Correo = "denciso@hotmail.com";
            nuevaResidente.Tex_Clave = "12345";
            nuevaResidente.Tex_Dni = "40459127";

            nuevaResidente.CodResidente = "12345678";
            nuevaResidente.Nom_Residente = "Ericsson Quispe";
            nuevaResidente.Fec_Nacimiento = DateTime.Parse("23/02/1982");
            nuevaResidente.Tex_Correo = "erimq7@hotmail.com";
            nuevaResidente.Tex_Clave = "12345";
            nuevaResidente.Tex_Dni = "12345678";

            nuevaResidente.Tex_Tipo_Residente = "PROPIETARIO"; //PROPIETARIO, RESIDENTE, USUARIO

            Residente residenteCreado = this.residenteDAO.Crear(nuevaResidente);

            // 4. Implementar las validaciones

            Assert.NotNull(residenteCreado);
            Assert.NotNull(residenteCreado.CodResidente);
            Assert.NotNull(residenteCreado.Tex_Correo);
        }


        [Test]
        public void TestModificar()
        {
            Residente ResidenteModificar = new Residente();

            // 3. Agregamos los valores del objeto TO
            ResidenteModificar.CodResidente = "12345678";
            ResidenteModificar.Nom_Residente = "Juan Choque";
            ResidenteModificar.Fec_Nacimiento = DateTime.Parse("23/02/1982");
            ResidenteModificar.Tex_Correo = "ghost_hardi@hotmail.com";
            ResidenteModificar.Tex_Clave = "12345";
            ResidenteModificar.Tex_Dni = "12345678";
            ResidenteModificar.Tex_Tipo_Residente = "PROPIETARIO"; //PROPIETARIO, RESIDENTE, USUARIO

            // 3. Llamada al método del DAO a probar
            Residente ResidenteObtenido = residenteDAO.Modificar(ResidenteModificar);
            // 4. ImplemResidenteentar las validaciones
            Assert.NotNull(ResidenteModificar);
            //Assert.AreEqual(ViviendaModificar.Correo, tutorObtenido.Correo);

        }
        [Test]
        public void TestEliminar()
        {

            // 2. Instanciamos el objeto TO
            Residente ResidenteEliminar = new Residente();
            ResidenteEliminar.CodResidente = "12345678";
            // 3. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                residenteDAO.Eliminar(ResidenteEliminar);
            });
            Assert.DoesNotThrow(delegate
            {
                residenteDAO.Eliminar(ResidenteEliminar);
            });

            // 4. Implementar las validaciones
            Assert.NotNull(ResidenteEliminar);
            Assert.NotNull(ResidenteEliminar.CodResidente);


        }
        [Test]
        public void TestObtener()
        {
            // 2. Instanciamos el objeto TO
            String codigo = "12345678";
            // 3. Llamada al método del DAO a probar
            Residente ResidenteObtenido = residenteDAO.Obtener(codigo);
            // 4. Implementar las validaciones
            Assert.NotNull(ResidenteObtenido);
            Assert.AreEqual(codigo, ResidenteObtenido.CodResidente);
            Assert.NotNull(ResidenteObtenido.Nom_Residente);
        }

        [Test]
        public void ListarResidenteCorreo()
        {
            string correo = "ghost";
            ICollection<Residente> LResidente = residenteDAO.ListarXCorreo(correo);
            Assert.NotNull(LResidente);
            Assert.LessOrEqual(LResidente.Count, 0);
        }
    }
}